// types.h - defines types used in WGAL
#ifndef WGAL_TYPES_H
#define WGAL_TYPES_H

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

// primitive types
typedef void				WGALVoid;//,	*WGALVoidPtr;
//typedef const WGALVoid		*WGALCVoidPtr;
typedef unsigned char		WGALByte;//,	*WGALBytePtr;
//typedef const WGALByte		*WGALCBytePtr;
typedef wchar_t				WGALChar,	*WGALString;
typedef const WGALChar		*WGALCString;
typedef int					WGALBool;
typedef signed char			WGALInt8;//,	*WGALInt8Ptr;
//typedef const WGALInt8		*WGALCInt8Ptr;
typedef short				WGALInt16;//,	*WGALInt16Ptr;
//typedef const WGALInt16		*WGALCInt16Ptr;
typedef int					WGALInt32;//,	*WGALInt32Ptr;
//typedef const WGALInt32		*WGALCInt32Ptr;
typedef unsigned char		WGALUInt8;//,	*WGALUInt8Ptr;
//typedef const WGALUInt8		*WGALCUInt8Ptr;
typedef unsigned int		WGALUInt16;//, *WGALUInt16Ptr;
//typedef const WGALUInt16	*WGALCUInt16Ptr;
typedef unsigned int		WGALUInt32;//, *WGALUInt32Ptr;
//typedef const WGALUInt32	*WGALCUInt32Ptr;
typedef float				WGALFloat;//,	*WGALFloatPtr;
//typedef const WGALFloat		*WGALCFloatPtr;
typedef double				WGALDouble;//,	*WGALDoublePtr;
//typedef const WGALDouble	*WGALCDoublePtr;
typedef	WGALUInt32			WGALColor;//,	*WGALColorPtr;
//typedef const WGALColor		*WGALCColorPtr;

// structs
typedef struct tagWGALDimension
{
	WGALFloat width;
	WGALFloat height;
} WGALDimension, *WGALDimensionPtr;

typedef struct tagWGALLocation
{
	WGALFloat x;
	WGALFloat y;
} WGALLocation, *WGALLocationPtr;

typedef struct tagWGALRect
{
	WGALFloat x;
	WGALFloat y;
	WGALFloat width;
	WGALFloat height;

	/*
	union
	{
		WGALLocation location;
		struct
		{
			WGALFloat x;
			WGALFloat y;
		};
	};
	
	union
	{
		WGALDimension dimension;
		struct
		{
			WGALFloat width;
			WGALFloat height;
		};
	};
	*/
} WGALRect, *WGALRectPtr;

#endif